클라우드 스토리지 추가 및 서버 마운트 가이드

1. 클라우드별 스토리지 추가 방법

1.1. AWS EC2 - EBS 볼륨 추가

콘솔에서 추가

  1. EC2 콘솔 → Volumes → Create Volume
  2. 볼륨 타입 선택 (gp3, io1, io2 등)
  3. 크기 및 IOPS 설정
  4. 가용 영역을 인스턴스와 동일하게 설정
  5. Actions → Attach Volume → 대상 인스턴스 선택

CLI로 추가

# 볼륨 생성
aws ec2 create-volume \
  --size 100 \
  --volume-type gp3 \
  --availability-zone ap-northeast-2a \
  --tag-specifications 'ResourceType=volume,Tags=[{Key=Name,Value=additional-storage}]'

# 볼륨 연결
aws ec2 attach-volume \
  --volume-id vol-1234567890abcdef0 \
  --instance-id i-1234567890abcdef0 \
  --device /dev/sdf

1.2. Naver Cloud Platform - 스토리지 추가

콘솔에서 추가

  1. 서버 → 스토리지 → 블록 스토리지
  2. 스토리지 생성 → 크기 및 타입 선택
  3. 서버에 연결 → 대상 서버 선택
  4. 디바이스명 확인 (/dev/xvdb, /dev/xvdc 등)

1.3. KT Cloud - 디스크 추가

콘솔에서 추가

  1. 서버 관리 → 추가 디스크
  2. 디스크 크기 설정 → 서버 선택
  3. 연결 완료 후 서버 재시작 필요할 수 있음

2. 서버에서 디스크 인식 확인

2.1. 디스크 장치 확인

# 모든 블록 디바이스 확인
lsblk

# 디스크 파티션 상세 정보
fdisk -l

# 새로 추가된 디스크만 확인
dmesg | grep -i "new disk"

# 디바이스 재스캔 (Hot-plug 지원 시)
echo "- - -" > /sys/class/scsi_host/host0/scan

출력 예시:

NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   10G  0 disk 
├─xvda1 202:1    0    1M  0 part 
└─xvda2 202:2    0   10G  0 part /
xvdf    202:80   0  100G  0 disk     # ← 새로 추가된 디스크

2.2. 디스크 정보 상세 확인

# 디스크 용량 및 파일시스템 확인
df -h

# 블록 디바이스 속성 확인
blkid

# 디스크 I/O 성능 확인
iostat -x 1

3. 파티션 생성 및 포맷

3.1. 파티션 생성 (fdisk 사용)

# 파티션 생성 시작
sudo fdisk /dev/xvdf

# fdisk 명령어 순서:
# n → (new partition)
# p → (primary partition) 
# 1 → (partition number)
# Enter → (first sector - default)
# Enter → (last sector - default, 전체 사용)
# w → (write and exit)

3.2. 파티션 생성 (parted 사용 - GPT)

# 2TB 이상 디스크는 GPT 파티션 테이블 사용 권장
sudo parted /dev/xvdf

# parted 명령어 순서:
(parted) mklabel gpt
(parted) mkpart primary ext4 0% 100%
(parted) quit

3.3. 파일시스템 포맷

# ext4 파일시스템으로 포맷
sudo mkfs.ext4 /dev/xvdf1

# xfs 파일시스템으로 포맷 (대용량 권장)
sudo mkfs.xfs /dev/xvdf1

# 포맷 진행률 확인
sudo mkfs.ext4 -F -v /dev/xvdf1

4. 파일시스템 vs LVM 선택 가이드

4.1. 단순 파일시스템 방식

적합한 경우:

설정 방법:

# 1. 파티션 생성
sudo fdisk /dev/xvdf

# 2. 파일시스템 생성
sudo mkfs.ext4 /dev/xvdf1

# 3. 마운트 포인트 생성
sudo mkdir /data

# 4. 마운트
sudo mount /dev/xvdf1 /data

4.2. LVM (Logical Volume Manager) 방식

적합한 경우:

설정 방법:

# 1. Physical Volume 생성
sudo pvcreate /dev/xvdf

# 2. Volume Group 생성
sudo vgcreate data-vg /dev/xvdf

# 3. Logical Volume 생성 (전체 공간 사용)
sudo lvcreate -l 100%FREE -n data-lv data-vg

# 4. 파일시스템 생성
sudo mkfs.ext4 /dev/data-vg/data-lv

# 5. 마운트
sudo mkdir /data
sudo mount /dev/data-vg/data-lv /data

4.3. LVM 추가 디스크 확장

# 새 디스크를 기존 VG에 추가
sudo pvcreate /dev/xvdg
sudo vgextend data-vg /dev/xvdg

# LV 크기 확장
sudo lvextend -l +100%FREE /dev/data-vg/data-lv

# 파일시스템 크기 확장
sudo resize2fs /dev/data-vg/data-lv  # ext4
# 또는
sudo xfs_growfs /data  # xfs

5. 마운트 및 영구 설정

5.1. 임시 마운트

# 마운트 포인트 생성
sudo mkdir /data

# 임시 마운트 (재부팅 시 해제됨)
sudo mount /dev/xvdf1 /data

# 마운트 확인
df -h | grep /data

5.2. 영구 마운트 (/etc/fstab 설정)

# UUID 확인 (권장 방식)
sudo blkid /dev/xvdf1

# /etc/fstab 파일 편집
sudo vim /etc/fstab

# fstab 항목 추가 (UUID 사용)
UUID=12345678-1234-1234-1234-123456789abc /data ext4 defaults,nofail 0 2

# 또는 디바이스명 사용 (권장하지 않음)
/dev/xvdf1 /data ext4 defaults,nofail 0 2

5.3. fstab 옵션 설명

# 기본 옵션
defaults     # 기본 마운트 옵션 (rw,suid,dev,exec,auto,nouser,async)
nofail       # 디바이스가 없어도 부팅 실패하지 않음
noatime      # 액세스 타임 업데이트 비활성화 (성능 향상)

# 보안 옵션
nosuid       # setuid 비트 무시
nodev        # 디바이스 파일 접근 차단
noexec       # 실행 파일 실행 차단

# 예시: 보안이 중요한 데이터 디렉토리
UUID=12345678-1234-1234-1234-123456789abc /data ext4 defaults,nofail,nosuid,nodev 0 2

5.4. 설정 테스트

# fstab 구문 검사
sudo mount -a

# 재부팅하지 않고 마운트 테스트
sudo umount /data
sudo mount /data

# 부팅 시 자동 마운트 확인
sudo systemctl daemon-reload

6. 실무 시나리오별 권장사항

6.1. 웹 서버 로그 디스크

요구사항: 로그 파일 저장, 빠른 쓰기 성능

# 단순 파일시스템 방식 권장
sudo mkfs.ext4 /dev/xvdf1
echo "UUID=$(blkid -s UUID -o value /dev/xvdf1) /var/log/nginx ext4 defaults,nofail,noatime 0 2" >> /etc/fstab

6.2. 데이터베이스 스토리지

요구사항: 높은 IOPS, 확장 가능성, 백업 지원

# LVM + XFS 권장
sudo pvcreate /dev/xvdf
sudo vgcreate db-vg /dev/xvdf
sudo lvcreate -l 100%FREE -n mysql-lv db-vg
sudo mkfs.xfs /dev/db-vg/mysql-lv

# fstab 설정
echo "UUID=$(blkid -s UUID -o value /dev/db-vg/mysql-lv) /var/lib/mysql xfs defaults,nofail,noatime 0 2" >> /etc/fstab

6.3. 컨테이너 스토리지 (Docker/Kubernetes)

요구사항: 동적 확장, 다중 볼륨 관리

# LVM thin provisioning 권장
sudo pvcreate /dev/xvdf
sudo vgcreate docker-vg /dev/xvdf
sudo lvcreate --type thin-pool -l 95%FREE --poolmetadatasize 1G -n docker-pool docker-vg

# Docker에서 direct-lvm 사용 설정
cat > /etc/docker/daemon.json << EOF
{
  "storage-driver": "devicemapper",
  "storage-opts": [
    "dm.thinpooldev=/dev/mapper/docker--vg-docker--pool",
    "dm.use_deferred_removal=true",
    "dm.use_deferred_deletion=true"
  ]
}
EOF

6.4. 공유 스토리지 (NFS)

요구사항: 네트워크 공유, 다중 서버 접근

# NFS 서버 설정
sudo mkfs.ext4 /dev/xvdf1
sudo mkdir /shared
sudo mount /dev/xvdf1 /shared

# NFS 공유 설정
echo "/shared *(rw,sync,no_subtree_check,no_root_squash)" >> /etc/exports
sudo systemctl restart nfs-server

# 클라이언트에서 마운트
sudo mount -t nfs 192.168.1.100:/shared /mnt/shared

7. 모니터링 및 유지보수

7.1. 디스크 사용량 모니터링

# 디스크 사용량 확인
df -h

# inode 사용량 확인
df -i

# 디렉토리별 사용량 확인
du -sh /data/*

# 실시간 I/O 모니터링
iotop

7.2. 디스크 성능 테스트

# 순차 쓰기 성능 테스트
sudo dd if=/dev/zero of=/data/testfile bs=1G count=1 oflag=dsync

# 랜덤 I/O 성능 테스트 (fio 필요)
sudo fio --name=random-write --ioengine=libaio --rw=randwrite --bs=4k --size=1G --numjobs=1 --filename=/data/testfile

7.3. 백업 및 스냅샷

# LVM 스냅샷 생성
sudo lvcreate -L 10G -s -n data-snapshot /dev/data-vg/data-lv

# 스냅샷 마운트
sudo mkdir /backup
sudo mount /dev/data-vg/data-snapshot /backup

# 백업 완료 후 스냅샷 제거
sudo umount /backup
sudo lvremove /dev/data-vg/data-snapshot

8. 트러블슈팅

8.1. 일반적인 문제들

디스크가 인식되지 않는 경우:

# 하드웨어 재검색
echo "- - -" > /sys/class/scsi_host/host*/scan

# 모듈 재로드
sudo modprobe -r sd_mod && sudo modprobe sd_mod

마운트 실패:

# 파일시스템 체크
sudo fsck -f /dev/xvdf1

# 강제 마운트 (읽기 전용)
sudo mount -o ro /dev/xvdf1 /data

부팅 실패 (fstab 오류):

# 복구 모드에서 fstab 수정
sudo mount -o remount,rw /
sudo vim /etc/fstab
# 문제가 되는 라인 주석 처리 또는 수정

8.2. 성능 최적화

# 스케줄러 변경 (SSD용)
echo none > /sys/block/xvdf/queue/scheduler

# I/O 큐 크기 조정
echo 1024 > /sys/block/xvdf/queue/nr_requests

# readahead 크기 조정
sudo blockdev --setra 256 /dev/xvdf

참고사항